S3のオブジェクトの最終更新日時は何を元に決定されますか?

S3のオブジェクトの最終更新日時は何を元に決定されますか?

S3 のオブジェクトの最終更新日時は 1. オブジェクト作成日(マルチパートアップロードの場合、マルチパートアップロードの開始日) と 2. 最終更新日 のいずれか遅い方です。そのため、オブジェクトをアップロードする際にマルチパートアップロードが発生すると、マルチパートアップロードが開始した時刻となります。
Clock Icon2024.06.12

困っていること

S3 にオブジェクトをアップロードしました。オブジェクトの最終更新日時を確認したところ、アップロード開始時間が記録されておりました。

アップロード完了時間をメタデータに保持したいのですが、どのようにすればいいでしょうか。

どう解決すればいいの?

S3 のオブジェクトの最終更新日時は 1. オブジェクト作成日(マルチパートアップロードの場合、マルチパートアップロードの開始日) と 2. 最終更新日 のいずれか遅い方です。そのため、オブジェクトをアップロードする際にマルチパートアップロードが発生すると、マルチパートアップロードが開始した時刻となります。

そのため、アップロード完了時刻をオブジェクトのタグに保存する必要があります。

aws s3 cp コマンドを使う場合は、下記のコマンドを実施ください。

$ aws s3 cp <大きいサイズのファイル> s3://<バケット名>/<オブジェクト名> && \
  aws s3api put-object-tagging --bucket <バケット名> --key <オブジェクト名> --tagging "TagSet=[{Key=uploaded,Value=`date`}]"

やってみた

EC2 インスタンスを起動し、セッションマネージャーで接続します。EC2 インスタンスには S3 へのアクセス権限を追加します。

まず、1 GiB のダミーデータを作成します。

$ dd if=/dev/zero of=1G.dummy bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 6.01101 s, 174 MB/s

$ ls -l
total 1024000
-rw-r--r-- 1 ssm-user ssm-user 1048576000 Jun 12 05:14 1G.dummy

当該のファイルをアップロードします。

$ aws s3 cp 1G.dummy s3://s3-last-modified-test/1G.dummy && \
  aws s3api put-object-tagging --bucket s3-last-modified-test --key 1G.dummy --tagging "TagSet=[{Key=uploaded,Value=`date`}]"

upload: ./1G.dummy to s3://s3-last-modified-test/1G.dummy

ファイルの最終更新日時と uploaded タグを確認します。

$ aws s3api list-objects-v2 --bucket s3-last-modified-test --prefix 1G.dummy
{
    "Contents": [
        {
            "LastModified": "2024-06-12T05:15:56.000Z",
            "ETag": "\"80fec5b52db421a0ed6544f01a801b8d-125\"",
            "StorageClass": "STANDARD",
            "Key": "1G.dummy",
            "Size": 1048576000
        }
    ]
}

$ aws s3api get-object-tagging --bucket s3-last-modified-test --key 1G.dummy
{
    "TagSet": [
        {
            "Value": "Wed Jun 12 05:16:05 UTC 2024",
            "Key": "uploaded"
        }
    ]
}

アップロード開始時刻がLast-Modified、アップロード完了時刻がタグuploadedとして記録されたことが確認できました。

参考資料

システムで定義されたオブジェクトメタデータ - オブジェクトメタデータの使用 - Amazon Simple Storage Service

Last-Modified オブジェクト作成日または最終更新日のいずれか遅い方。マルチパートアップロードの場合、オブジェクトの作成日はマルチパートアップロードの開始日です。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.